package com.weed.core;

import java.util.List;
import java.sql.Connection;

/**
 * 函数说明：
 *    抽象的数据处理接口，用于接受SQL语句的提交。
 *
 * @author Jason Zhuo
 * @version 1.0
 */
public interface DataProcess {
  /**
   * 获得当前使用的连接。
   * @return Connection
   */
  public Connection getConnection() ;
  /**
   * 设置当前使用的连接。
   * @param connection Connection
   */
  public void setConnection(Connection connection);
  /**
   * 是否自动提交。
   */
  public void beginTran();
  /**
   * 提交。
   */
  public void commit();
  /**
   * 回滚。
   */
  public void rollback();
  /**
   * 将object写入数据库.
   * @param object BEAN对象
   * @return  CommonOutput
   */
  public CommonOutput executeInsert(Object object,CommonInput input) throws WeedException;
  /**
   * 根据object的内容更新数据库.
   * @param object BEAN对象
   * @return  CommonOutput
   */
  public CommonOutput executeUpdate(Object object,CommonInput input) throws WeedException;;
  /**
   * 查询数据库的内容,并返回,数据库中的一行等同的一个object.
   * @param object BEAN对象
   * @return  CommonOutput
   */
  public CommonOutput executeQuery(Object object,CommonInput input) throws WeedException;;
  /**
   * 指定的记录存在时就插入或则就更新.
   * @param object BEAN对象
   * @return CommonOutput
   */
  public CommonOutput executeUpdateOrInsert(Object object,CommonInput input) throws WeedException;;
  /**
   * 删除object指定的记录.
   * @param object BEAN对象
   * @return CommonOutput
   */
  public CommonOutput executeDelete(Object object,CommonInput input) throws WeedException;
  /**
   * 用于执行存储过程。
   * @param StoreProcess
   * @return 返回执行的情况。
   * @throws WeedException
   */
  public CommonOutput executeStoreProcess(StoreProcess process) throws WeedException;
  /**
   * 获得是否执行成功。以便于事务控制。
   * 0:代表成功 -1代表失败
   */
  public int getSuccessed();
  /**
   *  返回执行的情况,在没有事务的情况下，与单句执行的功能一致，在事务的情况，返回所有执行的结果。
   */
  public CommonOutput getCommonOutput();
}
